#include <iostream>
#include <pthread.h>

class Mutex
{
private:
    pthread_mutex_t _mutex;
public:
    Mutex()
    {
        pthread_mutex_init(&_mutex, nullptr);
    }
    void lock()
    {
        pthread_mutex_lock(&_mutex);
    }
    void unlock()
    {
        pthread_mutex_unlock(&_mutex);
    }
    ~Mutex()
    {
        pthread_mutex_destroy(&_mutex);
    }
};

class LockGuard
{
private:
    Mutex* _mutex;
public:
    LockGuard(Mutex* mutex)
        :_mutex(mutex)
    {
        _mutex->lock();
        std::cout << "已上锁" << std::endl;
    }
    ~LockGuard() 
    {
        _mutex->unlock();
        std::cout << "已解锁" << std::endl;
    }
};
